home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / maustaus.i < prev    next >
Text File  |  1997-10-26  |  18KB  |  558 lines

  1. IMPLEMENTATION MODULE MausTauschrsc;
  2.  
  3. FROM SYSTEM   IMPORT ADR, ADDRESS, BYTE, TSIZE;
  4. FROM Storage    IMPORT ALLOCATE;
  5.  
  6. IMPORT mtAppl, mtUtils, mtXobjects;
  7. IMPORT MagicAES;
  8. IMPORT MagicVDI;
  9. IMPORT MagicDOS;
  10. IMPORT MagicStrings;
  11. IMPORT MagicTypes;
  12. IMPORT MagicSys;
  13. IMPORT mtRsc;
  14.  
  15. IMPORT CatGlobal;
  16.  
  17. CONST catrsc = 'cat.rsc';
  18.       midrsc = 'catmid.rsc';
  19.       colrsc = 'catcol.rsc';
  20.  
  21. VAR Tree : ARRAY[0..nrTrees-1] OF ADDRESS;
  22.     valid: ARRAY [0..256] OF CHAR;
  23.     tmplt: ARRAY [0..256] OF CHAR;
  24.  
  25. CONST   newRoutine = TRUE;
  26.  
  27. VAR theRSC : mtRsc.RESOURCE;
  28.  
  29.  
  30.  
  31. PROCEDURE vdiFix(VAR pfd : MagicVDI.MFDB; theAddr : ADDRESS; wb, h : INTEGER); FORWARD;
  32.  
  33. PROCEDURE vdiTrans(sAddr : ADDRESS; swb : INTEGER;
  34.                    dAddr : ADDRESS; dwb, h, handle : INTEGER);
  35. VAR src, dst : MagicVDI.MFDB;
  36. BEGIN
  37.   vdiFix(src, sAddr, swb, h); (* Load the source MFDB      *)
  38.   src.fdStand := 1;           (* Standard-Format           *)
  39.   vdiFix(dst, dAddr, dwb, h); (* Load the destination MFDB *)
  40.   dst.fdStand := 0;           (* Clear the std flag        *)
  41.   MagicVDI.TransformForm(handle, src, dst);
  42. END vdiTrans;
  43.  
  44. TYPE ptrBITBLK = POINTER TO  MagicAES.BITBLK;
  45.  
  46. PROCEDURE transBitblk(spec : ptrBITBLK; handle : INTEGER);
  47. VAR tAddr : ADDRESS;
  48.     wb, hl: INTEGER;
  49. BEGIN
  50.   tAddr := spec;
  51.   IF tAddr = ADDRESS(LONG(-1)) THEN RETURN END;
  52.   wb := spec^.biWb; (* Extract image dimensions     *)
  53.   hl := spec^.biHl; (* Perform a transform in place *)
  54.   vdiTrans(tAddr, wb, tAddr, wb, hl, handle);
  55. END transBitblk;
  56.  
  57. PROCEDURE MaskImg (adr: ADDRESS; byteLen, height: CARDINAL);
  58.   TYPE ByteSet = SET OF [0..7];
  59.   VAR ptr: POINTER TO ARRAY [0..$FFFF] OF BYTE;
  60.       i, j,  k : CARDINAL;
  61.       step : CARDINAL;
  62. BEGIN
  63.   IF adr = ADDRESS(-1L) THEN RETURN END;
  64.   IF adr = ADDRESS(0L) THEN RETURN END;
  65.   ptr := adr;
  66.   FOR i := 0 TO height - 1 DO
  67.     (* Zeilenweise durchgehen *)
  68.     FOR k := 0 TO byteLen - 1 DO
  69.       IF i MOD 2 = 0
  70.       THEN
  71.         ptr^[i*byteLen + k] := BYTE(ByteSet(ptr^[i*byteLen + k]) * ByteSet($55));
  72.       ELSE
  73.         ptr^[i*byteLen + k] := BYTE(ByteSet(ptr^[i*byteLen + k]) * ByteSet($AA));
  74.       END;
  75.     END;
  76.   END;
  77. END MaskImg;
  78.  
  79. PROCEDURE MaskImage (tr: ADDRESS; ob: INTEGER);
  80. VAR
  81.     tree    : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  82.     image   : MagicAES.PtrBITBLK;
  83. BEGIN
  84.   tree := tr;
  85.   (* image := tree^[ob].obSpec.ImagePtr; *)
  86.   image := mtXobjects.GetObSpec (tree, ob);
  87.   MaskImg (image^.biData, image^.biWb, image^.biHl);
  88. END MaskImage;
  89.  
  90. PROCEDURE FixData (adr: ADDRESS; byteLen, height, targetHeight: CARDINAL);
  91.   TYPE ByteSet = SET OF [0..7];
  92.   VAR ptr: POINTER TO ARRAY [0..$FFFF] OF BYTE;
  93.       i, j,  k : CARDINAL;
  94.       step : CARDINAL;
  95. BEGIN
  96.   IF targetHeight >= height THEN RETURN END;
  97.   IF adr = ADDRESS(-1L) THEN RETURN END;
  98.   IF adr = ADDRESS(0L) THEN RETURN END;
  99.   step := (targetHeight DIV (height - targetHeight));
  100.   j := 0;
  101.   ptr := adr;
  102.   FOR i := 0 TO targetHeight - 1 DO
  103.     (* Zeilenweise durchgehen *)
  104.     FOR k := 0 TO byteLen - 1 DO
  105.       ptr^[i*byteLen + k] := ptr^[j*byteLen + k];
  106.     END;
  107.     INC (j);
  108.     IF (j MOD step) = 0 
  109.     THEN
  110.       (* Zeile verodern und nochmal j erh”hen *)
  111.       FOR k := 0 TO byteLen - 1 DO
  112.         ptr^[i*byteLen + k] := BYTE(ByteSet(ptr^[i*byteLen + k]) + ByteSet(ptr^[j*byteLen + k]));
  113.         (*
  114.         ptr^[i*byteLen + k] := ptr^[j*byteLen + k];
  115.         *)
  116.       END;
  117.       INC (j);
  118.     END;
  119.   END;
  120. END FixData;
  121.  
  122. PROCEDURE FixImage (tr: ADDRESS; ob: INTEGER);
  123. VAR
  124.     tree    : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  125.     image   : MagicAES.PtrBITBLK;
  126. BEGIN
  127.   tree := tr;
  128.   (* image := tree^[ob].obSpec.ImagePtr; *)
  129.   image := mtXobjects.GetObSpec (tree, ob);
  130.   FixData (image^.biData, image^.biWb, image^.biHl, tree^[ob].obHeight);
  131.   image^.biHl := tree^[ob].obHeight;
  132.   tree^[ob].obWidth := image^.biWb * 8;
  133. END FixImage;
  134.  
  135. PROCEDURE FixIcon (tr: ADDRESS; ob: INTEGER);
  136. VAR
  137.     tree    : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  138.     image   : MagicAES.PtrICONBLK;
  139.     wb      : INTEGER;
  140. BEGIN
  141.   tree := tr;
  142.   (* image := tree^[ob].obSpec.IconPtr; *)
  143.   image := mtXobjects.GetObSpec (tree, ob);
  144.   wb := (image^.ibWicon + 7) DIV 8;
  145.   FixData (image^.ibPmask, wb, image^.ibHicon, tree^[ob].obHeight);
  146.   FixData (image^.ibPdata, wb, image^.ibHicon, tree^[ob].obHeight);
  147.   IF image^.ibHicon > tree^[ob].obHeight
  148.   THEN
  149.     (* Positionen des Textes und Zeichens fixen *)
  150.     wb := (tree^[ob].obHeight DIV (image^.ibHicon- tree^[ob].obHeight)) + 1;
  151.     DEC (image^.ibYchar, image^.ibYchar DIV wb); 
  152.     DEC (image^.ibYtext, image^.ibYtext DIV wb); 
  153.   END;
  154.   (* Gr”že fixen *)
  155.   image^.ibHicon := tree^[ob].obHeight;
  156.   tree^[ob].obWidth := image^.ibWicon;
  157. END FixIcon;
  158.  
  159. PROCEDURE TransGImage(tr : ADDRESS; obj, handle : INTEGER; fixSize: BOOLEAN);
  160. VAR type, wb, hl : INTEGER;
  161.     tAddr        : ADDRESS;
  162.     spec         : ptrBITBLK;
  163.     ptrIcn       : MagicAES.PtrICONBLK;
  164.     tree         : POINTER TO ARRAY[0..200] OF MagicAES.OBJECT;
  165. BEGIN
  166.   tree := tr;
  167.   (* type := tree^[obj].obType; *)
  168.   (* spec := ADDRESS(tree^[obj].obSpec.ImagePtr); *)
  169.   type := mtXobjects.GetObtype (tree, obj);
  170.   spec := mtXobjects.GetObSpec (tree, obj);
  171.   fixSize := fixSize & ~ mtUtils.InFlag (tree, obj, 13);
  172.   IF ADDRESS(spec) = ADDRESS(LONG(-1)) THEN RETURN END;
  173.   IF (type MOD 255) = MagicAES.GIMAGE
  174.   THEN
  175.     transBitblk(spec, handle);
  176.     IF (mtAppl.CharHeight >= 8) & (mtAppl.CharHeight < 16) & fixSize
  177.     THEN
  178.       FixImage (tr, obj);
  179.     END;
  180.   ELSIF (type MOD 255) = MagicAES.GICON
  181.   THEN
  182.     ptrIcn := ADDRESS(spec);
  183.     hl := ptrIcn^.ibHicon;
  184.     wb := (ptrIcn^.ibWicon + 7) DIV 8;
  185.     tAddr := ptrIcn^.ibPdata;
  186.     IF tAddr # ADDRESS(-1L)
  187.     THEN
  188.       vdiTrans (tAddr, wb, tAddr, wb, hl, handle)
  189.     END;
  190.     tAddr := ptrIcn^.ibPmask;
  191.     IF tAddr # ADDRESS(-1L)
  192.     THEN
  193.       vdiTrans (tAddr, wb, tAddr, wb, hl, handle)
  194.     END;
  195.     IF (mtAppl.CharHeight >= 8) & (mtAppl.CharHeight < 16) & fixSize
  196.     THEN
  197.       FixIcon (tr, obj);
  198.     END;
  199.   END;
  200. END TransGImage;
  201.  
  202. (*
  203.     nrTrees = 15;
  204. VAR TreeAddr: POINTER TO ARRAY [0..nrTrees-1] OF ADDRESS;
  205. *)
  206.  
  207. (* MagiC XTED Struktur. Geh”rt nach MagicAES.D *)
  208. TYPE XTED = RECORD
  209.              xtePtmplt  : POINTER TO ARRAY [0..255] OF CHAR;
  210.              xtePvalid  : POINTER TO ARRAY [0..255] OF CHAR;
  211.              xteVislen  : INTEGER;
  212.              xteScroll  : INTEGER;
  213.             END;
  214.  
  215. PROCEDURE InstallLongEdit(tree: mtUtils.tObjcTree; obj: CARDINAL; length: INTEGER);
  216.   VAR tedPtr: MagicAES.PtrTEDINFO;
  217.       adr   : ADDRESS;
  218.       validChar : CHAR;
  219.       i     : INTEGER;
  220.       xted  : POINTER TO XTED;
  221. BEGIN
  222.   tedPtr := mtXobjects.GetObSpec (tree, obj);
  223.   ALLOCATE (adr, length+2);
  224.   IF adr = NIL
  225.   THEN 
  226.     RETURN 
  227.   END;
  228.  
  229.   WITH tedPtr^ DO
  230.  
  231.     validChar := tePvalid^[0];
  232.     IF validChar = 0C
  233.     THEN
  234.       validChar := 'X';
  235.     END;
  236.     FOR i := 0 TO length-1 DO
  237.       valid[i] := validChar;
  238.       tmplt[i] := '_';
  239.     END;
  240.     valid[length] := '';
  241.     tmplt[length] := '';
  242.  
  243.     (* MagiC-Scroller *)
  244.     IF CatGlobal.magIx & (CatGlobal.magIxDate >= $19950829L)
  245.     THEN
  246.       (* Jawohl, wir scrollen ber MagiC *)
  247.       teJust := MagicVDI.LeftJust;
  248.  
  249.       ALLOCATE (xted, TSIZE(XTED));
  250.       IF xted = NIL
  251.       THEN
  252.         RETURN;
  253.       END;
  254.     
  255.       xted^.xtePtmplt := ADR(tmplt);
  256.       xted^.xtePvalid := ADR(valid);
  257.       xted^.xteVislen := teTmplen - 1;
  258.       xted^.xteScroll := 0;
  259.  
  260.       tePtmplt := NIL;
  261.       tePvalid := ADDRESS(xted);
  262.     ELSE
  263.       teFontid := 0;
  264.       tePvalid := ADR(valid);
  265.       tePtmplt := ADR(tmplt);
  266.     END;    
  267.       
  268.     teTxtlen := length;
  269.     teTmplen := length;
  270.     tePtext  := adr;
  271.  
  272.   END;
  273. END InstallLongEdit;
  274.  
  275. PROCEDURE RscInit():BOOLEAN;
  276. CONST   cImgCount = 36;
  277. TYPE    tImgInfo = RECORD    
  278.                     trIdx,
  279.                     obIdx   : INTEGER;
  280.                     fixSize : BOOLEAN;
  281.                   END;
  282.         tImgArray = ARRAY [0..cImgCount-1] OF tImgInfo;
  283.  
  284. CONST   cImgTable = tImgArray{
  285.                      tImgInfo{about, thecat0, FALSE},
  286.                      tImgInfo{about, thecat1, FALSE},
  287.                      tImgInfo{about, thecat2, FALSE},
  288.                      tImgInfo{about, thecat4, FALSE},
  289.                      tImgInfo{gruppen, grcfull, TRUE},
  290.                      tImgInfo{gruppen, grcempty, TRUE},
  291.                      tImgInfo{grsteuer, wupmess, TRUE},
  292.                      tImgInfo{grsteuer, whupmess, TRUE},
  293.                      tImgInfo{grsteuer, wdownmess, TRUE},
  294.                      tImgInfo{grsteuer, whdownmess, TRUE},
  295.                      tImgInfo{grsteuer, wrightmess, TRUE},
  296.                      tImgInfo{grsteuer, whrightmess, TRUE},
  297.                      tImgInfo{grsteuer, wleftmess, TRUE},
  298.                      tImgInfo{grsteuer, whleftmess, TRUE},
  299.                      tImgInfo{grsteuer, return, TRUE},
  300.                      tImgInfo{grsteuer, hreturn, TRUE},
  301.                      tImgInfo{grsteuer, waction, TRUE},
  302.                      tImgInfo{grsteuer, winfo, TRUE},
  303.                      tImgInfo{grsteuer, wtree, TRUE},
  304.                      tImgInfo{grsteuer, wlist, TRUE},
  305.                      tImgInfo{grsteuer, wpict, TRUE},
  306.                      tImgInfo{grsteuer, wpop, TRUE},
  307.                      tImgInfo{msgctrl, ctrledit, FALSE},
  308.                      tImgInfo{msgctrl, ctrlkomm, FALSE},
  309.                      tImgInfo{msgctrl, ctrlview, FALSE},
  310.                      tImgInfo{msgctrl, ctrldel, FALSE},
  311.                      tImgInfo{msgctrl, ctrlcopy, FALSE},
  312.                      tImgInfo{msgctrl, ctrlhdr, FALSE},
  313.                      tImgInfo{msgctrl, ctrlback, FALSE},
  314.                      tImgInfo{editctrl, ec_back, FALSE},
  315.                      tImgInfo{editctrl, ec_edit, FALSE},
  316.                      tImgInfo{editctrl, ec_pop, FALSE},
  317.                      tImgInfo{cat_icon, the_icon, FALSE},
  318.                      tImgInfo{loadbox, loadimg0, TRUE},
  319.                      tImgInfo{loadbox, loadimg1, TRUE},
  320.                      tImgInfo{loadbox, loadimg2, TRUE}
  321.                    };
  322.                     
  323.  
  324. VAR workIn    : MagicVDI.tWorkIn;
  325.     workOut   : MagicVDI.tWorkOut;
  326.     vdiHandle, j : INTEGER;
  327.     scrap      : ARRAY[0..255] OF CHAR;
  328.     rsrcname   : ARRAY[0..255] OF CHAR;
  329.     normalResource: BOOLEAN;
  330.     o1,o2,o3,o4: INTEGER;
  331.     (*$? newRoutine:
  332.     rsPtr      : mtRsc.RSXHDR;
  333.     *)
  334.     (*$? NOT newRoutine:
  335.     rsPtr      : POINTER TO MagicTypes.RSHDR;
  336.     *)
  337.     base       : mtUtils.tObjcTree;
  338.     typ        : INTEGER;
  339.     extyp      : INTEGER;
  340.     c          : CARDINAL;
  341.     imgInfo    : tImgInfo;
  342. BEGIN
  343.   (* Je nach Aufl”sung, AES und Farbanzahl Resource ausw„hlen *)
  344.   normalResource := FALSE;
  345.   (*
  346.   IF mtAppl.CharHeight = 8
  347.   THEN 
  348.     (* St-Mid Ressource laden *)
  349.     MagicStrings.Assign (midrsc, rsrcname);
  350.   ELS
  351.   *)
  352.   IF (mtAppl.Bitplanes >= 4) & 
  353.      ( newRoutine OR 
  354.        (MagicAES.AESGlobal.apVersion >= $399 ))
  355.   THEN
  356.     (* ApplGetinfo aufrufen, ob Farbicons untersttzt werden *)
  357.     IF newRoutine 
  358.     THEN
  359.       (* Farbresource mit Farbicons laden *)
  360.       MagicStrings.Assign (colrsc, rsrcname);
  361.     ELSIF (  (CatGlobal.magIx & (CatGlobal.magIxVer >= $200))
  362.          OR ~CatGlobal.magIx)
  363.       & (MagicAES.ApplGetinfo (MagicAES.AECOLOR, o1, o2, o3, o4) = 1)
  364.       & (o3 = 1)
  365.     THEN
  366.       (* Farbresource mit Farbicons laden *)
  367.       MagicStrings.Assign (colrsc, rsrcname);
  368.     ELSE
  369.       normalResource := TRUE;
  370.       MagicStrings.Assign (catrsc, rsrcname);
  371.     END;
  372.   ELSE
  373.     (* normale Resource laden *)
  374.     normalResource := TRUE;
  375.     MagicStrings.Assign (catrsc, rsrcname);
  376.   END;
  377.  
  378.   (*$? NOT newRoutine:
  379.   IF ~MagicAES.RsrcLoad (rsrcname) THEN
  380.     CatGlobal.ApplPath(scrap);
  381.     MagicStrings.Append(rsrcname, scrap);
  382.     IF ~MagicAES.RsrcLoad (scrap) THEN 
  383.       IF ~normalResource 
  384.       THEN
  385.         (* Nochmal versuchen mit normaler Resource *)
  386.         MagicStrings.Assign (catrsc, rsrcname);
  387.         IF ~MagicAES.RsrcLoad (rsrcname) THEN
  388.           CatGlobal.ApplPath(scrap);
  389.           MagicStrings.Append(rsrcname, scrap);
  390.           IF ~MagicAES.RsrcLoad (scrap) THEN 
  391.             RETURN FALSE
  392.           END;
  393.         END;
  394.       ELSE
  395.         RETURN FALSE 
  396.       END;
  397.     END;
  398.   END;
  399.  
  400.   WITH MagicAES.AESPB.cbPglobal^ DO
  401.     rsPtr := apPmem;
  402.  
  403.     WITH rsPtr^ DO
  404.       (* Objcspec relozieren *)
  405.       IF rshNobs > 0 THEN
  406.        base:= rsPtr + MagicSys.CastToAddr (rshObject);
  407.        FOR c:= 0 TO rshNobs - 1 DO
  408.         WITH base^[c] DO
  409.          typ:= obType MOD 255;
  410.          extyp:= obType DIV 255;
  411.          IF (extyp = 24)
  412.          THEN
  413.            InstallLongEdit (base, c, 256);
  414.          END; (* IF *)
  415.         END; (* WITH *)
  416.        END; (* FOR *)
  417.       END; (* IF rshNobs *)
  418.     END;
  419.   END;
  420.   *)
  421.  
  422.   (*$? newRoutine:
  423.   IF ~mtRsc.LoadRsc (rsrcname, theRSC) THEN
  424.     CatGlobal.ApplPath(scrap);
  425.     MagicStrings.Append(rsrcname, scrap);
  426.     IF ~mtRsc.LoadRsc (rsrcname, theRSC) THEN 
  427.       IF ~normalResource 
  428.       THEN
  429.         (* Nochmal versuchen mit normaler Resource *)
  430.         MagicStrings.Assign (catrsc, rsrcname);
  431.         IF ~mtRsc.LoadRsc (rsrcname, theRSC) THEN
  432.           CatGlobal.ApplPath(scrap);
  433.           MagicStrings.Append(rsrcname, scrap);
  434.           IF ~mtRsc.LoadRsc (scrap, theRSC) THEN 
  435.             RETURN FALSE
  436.           END;
  437.         END;
  438.       ELSE
  439.         RETURN FALSE 
  440.       END;
  441.     END;
  442.   END;
  443.  
  444.   mtRsc.GetRscHeader (theRSC, rsPtr);
  445.   WITH rsPtr DO
  446.    IF rshNobs > 0
  447.    THEN
  448.      base := mtRsc.GaddrRsc (theRSC, MagicAES.ROBJECT, 0);
  449.      FOR c:= 0 TO SHORT(rshNobs) - 1 DO
  450.       WITH base^[c] DO
  451.        typ:= obType MOD 255;
  452.        extyp:= obType DIV 255;
  453.        IF (extyp = 24)
  454.        THEN
  455.          InstallLongEdit (base, c, 256);
  456.        END; (* IF *)
  457.       END; (* WITH *)
  458.      END; (* FOR *)
  459.     END (* IF rshNobs *)
  460.   END;
  461.   *)
  462.  
  463.   (*$? NOT newRoutine:
  464.   FOR c := 0 TO rsPtr^.rshNtree-1 DO
  465.     Tree[c]    := MagicAES.RsrcGaddr (MagicAES.RTREE, c);
  466.   END;
  467.   *)
  468.   (*$? newRoutine:
  469.   FOR c := 0 TO SHORT(rsPtr.rshNtree)-1 DO
  470.     Tree[c]    := mtRsc.GaddrRsc (theRSC, MagicAES.RTREE, c);
  471.   END;
  472.   *)
  473.   TreeAddr := ADR(Tree);
  474.  
  475.   workIn[0] := 1; (* Bildschirmtreiber, aktuelle Aufl”sung *)
  476.   workIn[1] := 1; (* Linientyp durchgehend                 *)
  477.   workIn[2] := 0; (* Linienfarbe                           *)
  478.   workIn[3] := 0; (* Markertyp                             *)
  479.   workIn[4] := 0; (* Markerfarbe                           *)
  480.   workIn[5] := 1; (* Textstil - System                     *)
  481.   workIn[6] := 1; (* Textfarbe                             *)
  482.   workIn[7] := 1; (* Flltyp weiž                          *)
  483.   workIn[8] := 1; (* Fllmusterindex                       *)
  484.   workIn[9] := 0; (* Fllfarbe                             *)
  485.   workIn[10]:= 2; (* Ger„tespezifische Koordinaten         *)
  486.   MagicAES.GrafHandle(vdiHandle, j,j,j,j);
  487.   MagicVDI.OpenVirtual(workIn, vdiHandle, workOut);
  488.   IF vdiHandle > 0 THEN
  489.     FOR j := 0 TO cImgCount-1 DO
  490.       imgInfo := cImgTable[j];
  491.       WITH imgInfo DO
  492.         TransGImage (Tree[trIdx], obIdx, vdiHandle, fixSize);
  493.       END;
  494.     END;
  495.     IF (mtAppl.Bitplanes = 1)
  496.     THEN
  497.       MaskImage (Tree[about], thecat0);
  498.       MaskImage (Tree[loadbox], loadimg2);
  499.     END;
  500.     (*
  501.     TransGImage(Tree[about], thecat0, vdiHandle, FALSE);
  502.     TransGImage(Tree[about], thecat1, vdiHandle, FALSE);
  503.     TransGImage(Tree[gruppen], grcfull, vdiHandle, TRUE);
  504.     TransGImage(Tree[gruppen], grcempty, vdiHandle, TRUE);
  505.     TransGImage(Tree[grsteuer], wupmess, vdiHandle, TRUE);
  506.     TransGImage(Tree[grsteuer], whupmess, vdiHandle, TRUE);
  507.     TransGImage(Tree[grsteuer], wdownmess, vdiHandle, TRUE);
  508.     TransGImage(Tree[grsteuer], whdownmess, vdiHandle, TRUE);
  509.     TransGImage(Tree[grsteuer], wrightmess, vdiHandle, TRUE);
  510.     TransGImage(Tree[grsteuer], whrightmess, vdiHandle, TRUE);
  511.     TransGImage(Tree[grsteuer], wleftmess, vdiHandle, TRUE);
  512.     TransGImage(Tree[grsteuer], whleftmess, vdiHandle, TRUE);
  513.     TransGImage(Tree[grsteuer], return, vdiHandle, TRUE);
  514.     TransGImage(Tree[grsteuer], hreturn, vdiHandle, TRUE);
  515.     TransGImage(Tree[grsteuer], waction, vdiHandle, TRUE);
  516.     TransGImage(Tree[grsteuer], winfo, vdiHandle, TRUE);
  517.     TransGImage(Tree[grsteuer], wtree, vdiHandle, TRUE);
  518.     TransGImage(Tree[grsteuer], wpop, vdiHandle, TRUE);
  519.     TransGImage(Tree[msgctrl], ctrledit, vdiHandle, TRUE);
  520.     TransGImage(Tree[msgctrl], ctrlkomm, vdiHandle, TRUE);
  521.     TransGImage(Tree[msgctrl], ctrlview, vdiHandle, TRUE);
  522.     TransGImage(Tree[msgctrl], ctrldel, vdiHandle, TRUE);
  523.     TransGImage(Tree[msgctrl], ctrlcopy, vdiHandle, TRUE);
  524.     TransGImage(Tree[msgctrl], ctrlhdr, vdiHandle, TRUE);
  525.     TransGImage(Tree[msgctrl], ctrlback, vdiHandle, TRUE);
  526.     TransGImage(Tree[editctrl], ec_back, vdiHandle, TRUE);
  527.     TransGImage(Tree[editctrl], ec_edit, vdiHandle, TRUE);
  528.     TransGImage(Tree[editctrl], ec_pop, vdiHandle, TRUE);
  529.     TransGImage(Tree[cat_icon], the_icon, vdiHandle, TRUE);
  530.     TransGImage(Tree[loadbox], loadimg0, vdiHandle, TRUE);
  531.     TransGImage(Tree[loadbox], loadimg1, vdiHandle, TRUE);
  532.     *)
  533.     MagicVDI.CloseVirtual(vdiHandle);
  534.   END;
  535.  
  536.  
  537.   RETURN TRUE
  538. END RscInit;
  539.  
  540. PROCEDURE RscFree ();
  541. BEGIN
  542.   mtRsc.FreeAll();
  543. END RscFree;
  544.  
  545. PROCEDURE vdiFix(VAR pfd : MagicVDI.MFDB; theAddr : ADDRESS; wb, h : INTEGER);
  546. BEGIN
  547.   WITH pfd DO
  548.     fdWdwidth := wb DIV 2;
  549.     fdW       := wb * 8;
  550.     fdH       := h;
  551.     fdNplanes := 1;
  552.     fdAddr    := theAddr;
  553.   END
  554. END vdiFix;
  555.  
  556. END MausTauschrsc.
  557.  
  558.